// import { spawn } from 'cross-spawn'
// import { readdirSync, readFileSync } from 'fs'
// import { Project, upload, preview } from 'miniprogram-ci'
// import path from 'path'
// import inquirer from 'inquirer'

// export const wepyEnv = {
//   prod: '',
//   uat: 'u',
//   dev: 's'
// }

// export const ciMiniapp = async (cimessage: any): Promise<void> => {
//   const {
//     action,
//     version,
//     desc,
//     pagePath,
//     searchQuery,
//     appid,
//     appkey,
//     dir
//   } = cimessage
//   const project = new Project({
//     appid,
//     type: 'miniProgram',
//     projectPath: dir,
//     privateKeyPath: appkey
//   })

//   if (action === 'upload') {
//     const uploadResult = await upload({
//       project,
//       version,
//       desc,
//       setting: {
//         es6: true
//       },
//       onProgressUpdate: console.log
//     })
//     console.log(uploadResult)
//   }
//   if (action === 'preview') {
//     const previewResult = await preview({
//       project,
//       version,
//       desc,
//       setting: {
//         es6: true
//       },
//       qrcodeFormat: 'image',
//       qrcodeOutputDest: dir,
//       onProgressUpdate: console.log,
//       pagePath,
//       searchQuery
//     })
//     console.log(previewResult)
//   }
// }

// export const getobjtype = (): 'taro' | 'wepy' | undefined => {
//   const cwd = process.cwd()
//   const list = readdirSync(cwd)
//   const typeMap = {
//     'tsconfig.json': 'taro',
//     'wepy.config.js': 'wepy'
//   }

//   const filename = list.find(item => ['tsconfig.json', 'wepy.config.js'].includes(item)) as 'tsconfig.json' | 'wepy.config.js'

//   return typeMap[filename] as 'taro' | 'wepy'
// }

// export const runcwd = (cwd: string, option = {}, cb?: any): void => {
//   const start = cwd.split(' ')
//   const gocwd = start.slice(1)
//   const ls = spawn(start[0], gocwd, option)
//   ls.stdout.on('data', (data: string) => {
//     console.log(`${data}`)
//   })
//   ls.stderr.on('data', (data: string) => {
//     console.error(`${data}`)
//   })

//   if (typeof (cb) === 'function') {
//     ls.on('close', cb)
//   }
// }

// export const runobj = (dir: string, env: string, isw = false, cimsg?: any): void => {
//   const type = getobjtype()
//   if (dir === '' || env === '') return console.log('请检查运行项目的入参')
//   let runcmdstr, cwdoptions
//   switch (type) {
//     case 'taro':
//       cwdoptions = { cwd: '../../' }
//       isw
//         ? runcmdstr = `npx cross-env RUN_ENV='${env}' npm_config_env='${env}' npm_config_dir='${dir}' taro build --type weapp --watch`
//         : runcmdstr = `npx cross-env RUN_ENV='${env}' npm_config_env='${env}' npm_config_dir='${dir}' taro build --type weapp`
//       break
//     case 'wepy':
//       cwdoptions = {}
//       isw
//         ? runcmdstr = `npx cross-env NODE_ENV=develop API_ENV=${wepyEnv[env as 'prod' | 'uat' | 'dev']} HIS_ID=${dir} wepy build --watch`
//         : runcmdstr = `npx cross-env NODE_ENV=production API_ENV=${wepyEnv[env as 'prod' | 'uat' | 'dev']} HIS_ID=${dir} wepy build`
//       break
//     default:
//       return console.log('获取项目类型失败')
//   }
//   if (isw) {
//     runcwd(runcmdstr, cwdoptions)
//     return
//   }

//   runcwd(runcmdstr, cwdoptions, () => {
//     try {
//       const dir = process.cwd()
//       const projectConfig = readFileSync(path.join(dir, 'project.config.json'), 'utf-8')
//       let appid: string
//       if (env === 'prod') {
//         appid = JSON.parse(projectConfig).appid
//       } else {
//         appid = JSON.parse(projectConfig).uatAppid
//       }
//       const appkey = readFileSync(path.join(dir, `${appid}.key`), 'utf-8')
//       void ciMiniapp({
//         ...cimsg,
//         appid,
//         appkey,
//         dir
//       })
//     } catch (error) {
//       console.log('请先按照文档接入')
//     }
//   })
// }

// export const test = async (): Promise<void> => {
//   const { question } = await inquirer.prompt([
//     {
//       name: 'question',
//       type: 'list',
//       message: '请选择您的问题',
//       choices: ['如何上热搜', '如何财富自由', '我要回家躺平']
//     }
//   ])
//   console.log('question', question)
// }
